package com.yuzhi.master.drainSms.service;


import com.yuzhi.common.core.page.PageDataInfo;
import com.yuzhi.master.drainSms.domain.vo.DrainSmsInfoVo;
import com.yuzhi.master.drainSms.domain.bo.DrainSmsInfoBo;
import com.yuzhi.master.drainSms.domain.request.DrainSmsInfoReq;
import org.dromara.sms4j.api.entity.SmsResponse;


import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.List;

/**
 * 短信消息明细Service接口
 *
 * @author coding123
 * @date 2025-08-29
 */
public interface IDrainSmsInfoService {

    /**
     * 查询短信消息明细
     */
    DrainSmsInfoVo queryById(String id);

    /**
     * 查询短信消息明细列表
     */
    PageDataInfo<DrainSmsInfoVo> queryPageList(DrainSmsInfoReq request);

    /**
     * 查询短信消息明细列表
     */
    List<DrainSmsInfoVo> queryList(DrainSmsInfoReq request);

    /**
     * 新增短信消息明细
     */
    Boolean insertByBo(DrainSmsInfoBo bo);

    /**
     * 修改短信消息明细
     */
    Boolean updateByBo(DrainSmsInfoBo bo);

    /**
     * 根据id删除短信消息明细信息
     */
    Boolean deleteById(String id, Boolean isValid);

    /**
     * 校验并批量删除短信消息明细信息
     */
    Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid);


    /**
     * 调用短信服务发送短信并记录日志
     * @param phonenumber  手机号码
     * @param smsType 短信消息类型(1:验证码 2:待办通知)
     * @param msg  短信内容
     * @param templateId 短信模板
     * @param map 短信模板内容参数
     * @return
     */
    SmsResponse sendSmsInfo(String phonenumber,String smsType, String msg, String templateId, LinkedHashMap<String, String> map );

}
